﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Windows.Forms;
using System.IO;
using BidFunLib.Entity;
using BidFunLib.BidWeb;
using BidFunLib.BidWeb.Sale;

namespace BidFunLib
{
    class BidWebXML
    {
        public static void SaveBidSale(BidWebSaleEngine bid)
        {
            String filename = Application.StartupPath + "\\" + bid.Sale.BidObject.Label + "." + bid.Sale.BidFunIdentifier + ".xml";
           
            XmlDocument doc = new XmlDocument();
            XmlElement root = null;
            
            if (File.Exists(filename) == true)
            {
                doc.Load(filename);
                root = (XmlElement)doc.DocumentElement;
            }
            else
            {
                root = doc.CreateElement("BidRobot");
            }
            try
            {
                XmlTextWriter textWriter = new XmlTextWriter(filename, null);
                textWriter.Formatting = Formatting.Indented;

                XmlElement bidSale = doc.CreateElement("BidSale");

                XmlAttribute att = doc.CreateAttribute("BidId");
                att.Value = bid.Sale.BidFunIdentifier;
                bidSale.Attributes.Append(att);

                att = doc.CreateAttribute("Object");
                att.Value = bid.Sale.BidObject.Label;
                bidSale.Attributes.Append(att);

                att = doc.CreateAttribute("StartDateTime");
                att.Value = bid.Sale.StartDateTime.ToString();
                bidSale.Attributes.Append(att);

                att = doc.CreateAttribute("Robot");
                att.Value = bid.Sale.BidFunBotAuthorized.ToString();
                bidSale.Attributes.Append(att);

                if (bid.Sale.EndDateTime != null)
                {
                    att = doc.CreateAttribute("EndDateTime");
                    att.Value = bid.Sale.EndDateTime.ToString();
                    bidSale.Attributes.Append(att);
                }

                XmlElement bidList = doc.CreateElement("BidList");

                foreach (BidLogger bidl in bid.Sale.BidloggerList)
                {
                    XmlElement bidlog = doc.CreateElement("Bid");

                    XmlAttribute att_bidlog = doc.CreateAttribute("User");
                    att_bidlog.Value = bidl.BidUser.Pseudo;
                    bidlog.Attributes.Append(att_bidlog);

                    att_bidlog = doc.CreateAttribute("Amount");
                    att_bidlog.Value = bidl.Amount;
                    bidlog.Attributes.Append(att_bidlog);

                    att_bidlog = doc.CreateAttribute("SpanTime");
                    att_bidlog.Value = bidl.Span_time;
                    bidlog.Attributes.Append(att_bidlog);

                    att_bidlog = doc.CreateAttribute("Time");
                    att_bidlog.Value = bidl.DateTime.ToString();
                    bidlog.Attributes.Append(att_bidlog);

                    att_bidlog = doc.CreateAttribute("Type");
                    att_bidlog.Value = bidl.BidOperatorType.Name;
                    bidlog.Attributes.Append(att_bidlog);

                    att_bidlog = doc.CreateAttribute("Winner");
                    att_bidlog.Value = bidl.Winner.ToString();
                    bidlog.Attributes.Append(att_bidlog);

                    att_bidlog = doc.CreateAttribute("NbUser");
                    att_bidlog.Value = bidl.NbUserConnected.ToString();
                    bidlog.Attributes.Append(att_bidlog);
                    bidList.AppendChild(bidlog);
                }
                bidSale.AppendChild(bidList);
                root.AppendChild(bidSale);
                doc.AppendChild(root);

                doc.Save(textWriter);
                textWriter.Close();
            }
            catch (Exception mme)
            {
                Console.WriteLine(mme);
            }
        }
        
    }
}
